﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using FBWMS.Properties;

namespace FBWMS
{
	public class G_CommonClassControl
	{

		public G_CommonClassControl()
		{
		}
        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_saveFileDialog
        // Parameter : str_Title            :string     :タイトル
        //           : str_InitialDir       :string     :初期表示ディレクトリ
        //           : str_InitialFile      :string     :初期表示ファイル
        //           : str_Filter           :string     :フィルタリング
        // Return    : ダイアログで選択したファイルパス
        // Contents  : ファイルセーブ用のダイアログ表示
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static string G_Control_saveFileDialog(string str_Title,string str_InitialDir,string str_InitialFile,string str_Filter)
        {
            // SaveFileDialog の新しいインスタンスを生成する (デザイナから追加している場合は必要ない)
            SaveFileDialog saveFileDialog1 = new SaveFileDialog();

            // ダイアログのタイトルを設定する
            saveFileDialog1.Title = str_Title;

            // 初期表示するディレクトリを設定する
            saveFileDialog1.InitialDirectory = str_InitialDir;

            // 初期表示するファイル名を設定する
            saveFileDialog1.FileName = str_InitialFile;

            // ファイルのフィルタを設定する
            //                saveFileDialog1.Filter = "テキスト ファイル|*.txt;*.log|すべてのファイル|*.*";
            saveFileDialog1.Filter = str_Filter;

            // ファイルの種類 の初期設定を 2 番目に設定する (初期値 1)
            saveFileDialog1.FilterIndex = 2;

            // ダイアログボックスを閉じる前に現在のディレクトリを復元する (初期値 false)
            saveFileDialog1.RestoreDirectory = true;

            // [ヘルプ] ボタンを表示する (初期値 false)
            saveFileDialog1.ShowHelp = true;

            // 存在しないファイルを指定した場合は、
            // 新しく作成するかどうかの問い合わせを表示する (初期値 false)
            saveFileDialog1.CreatePrompt = false;

            // 存在しているファイルを指定した場合は、
            // 上書きするかどうかの問い合わせを表示する (初期値 true)
            saveFileDialog1.OverwritePrompt = true;

            // 存在しないファイル名を指定した場合は警告を表示する (初期値 false)
            //saveFileDialog1.CheckFileExists = true;

            // 存在しないパスを指定した場合は警告を表示する (初期値 true)
            //saveFileDialog1.CheckPathExists = true;

            // 拡張子を指定しない場合は自動的に拡張子を付加する (初期値 true)
            //saveFileDialog1.AddExtension = true;

            // 有効な Win32 ファイル名だけを受け入れるようにする (初期値 true)
            //saveFileDialog1.ValidateNames = true;

            // ダイアログを表示し、戻り値が [OK] の場合は、選択したファイルを表示する
            string str_FilePath = "";
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                str_FilePath = saveFileDialog1.FileName;
            }

            // 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照)
            saveFileDialog1.Dispose();

            return str_FilePath;
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_ClearData_ComboBox(ComboBox cmbObj)
        // Parameter : cmbObj            :ComboBox     :需要绑定的Combobox;
        // Return    : true Or false      True为成功，False为失败
        // Contents  : 生成空Combobox
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        // Makes     : Tony
        // History   : 2008/10/15       : 修改
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_ClearData_ComboBox(ComboBox cmbObj)
        {
            cmbData[] cmb = new cmbData[1];
            cmb[0] = new cmbData();
            cmb[0].Name = "";
            cmb[0].Value = "";
            cmbObj.DataSource = cmb;
            cmbObj.DisplayMember = "Name";
            cmbObj.ValueMember = "Value";

            return true;
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox_Nins_CD
        // Parameter : cmbObj            :ComboBox     :データを設定するコンボボックス
        // Parameter : str_Tori_CD       :String       :取引先コード
        // Return    : true Or false
        // Contents  : コンボボックス用のデータを取得し生成(荷主コード生成限定用)
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox_Nins_CD(ComboBox cmbObj, string str_Tori_CD)
        {
            DataSet ds = new DataSet();
            SqlConnection connect;
            //DB接続
            G_CommonClassDB.G_DB_Connect(out connect);
            //cmd設定
            SqlCommand sqlCmd = connect.CreateCommand();
            SqlParameter[] sqlPara = new SqlParameter[1];
            sqlPara[0] = G_CommonClassDB.G_DB_SetSQLDBParameter("@Tori_CD", ParameterDirection.Input, SqlDbType.VarChar, 25, str_Tori_CD);
            G_CommonClassDB.G_DB_ExecStoredProc(connect, sqlCmd, "USP_COM_M_Shipper_DataSelect", sqlPara, out ds);

            //DB解放
            G_CommonClassDB.G_DB_Dispose(connect);

            //コンボボックス生成
            if (!G_Control_SetData_ComboBox(cmbObj, ds, 1, 0))
            {
                string str_Message = G_CommonClassSystem.G_System_GetMessage(G_CommonDefine.G_Message_BindComboBox);
                //MessageBox.Show("コンボボックスの設定に失敗しました。");
                MessageBox.Show(str_Message);
                return false;
            }

            //データセットクリア
            ds.Clear();

            //正常値を返す
            return true;
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox_Todo_CD
        // Parameter : cmbObj            :ComboBox     :需要绑定的数据源
        // Parameter : str_Tori_CD       :String       :客户代码
        // Return    : true Or false      
        // Contents  : 根据客户代码绑定出货地Code数据源
        // Makes     : Tony
        // History   : 2007/06/15       : 创建
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox_Todo_CD(ComboBox cmbObj, string str_Tori_CD)
        {
            try
            {
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataStart, "G_Control_MakeData_ComboBox_Todo_CD(ComboBox cmbObj, string str_Tori_CD)");
                DataSet ds = null;
                //G_CommonDB 可能未签入,暂屏蔽
                ds = G_CommonDB.G_DB_Todo_Code(str_Tori_CD);
                if (ds == null)
                {
                    return false;
                }

                //填充Comobox
                if (!G_Control_SetData_ComboBox(cmbObj, ds, 1, 0))
                {
                    //message ////
                    MessageBox.Show(Resources.MakePrinterCombo);
                    return false;
                }

                ds.Clear();

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataEnd, "G_Control_MakeData_ComboBox_Todo_CD(ComboBox cmbObj, string str_Tori_CD)");

                return true;
            }
            catch (Exception err)
            {
                //生成空combobox
                G_Control_ClearData_ComboBox(cmbObj);

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.MakeDataError + err.Message, "G_Control_MakeData_ComboBox_Todo_CD(ComboBox cmbObj, string str_Tori_CD)");
                return false;
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox_Time_CD
        // Parameter : cmbObj            :ComboBox     :データを設定するコンボボックス
        //           : str_Tori_CD       :String       :取引先コード
        //           : str_Unso_CD       :String       :運送方法コード
        // Return    : true Or false
        // Contents  : コンボボックス用のデータを取得し生成(時間帯コード生成限定用)
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox_Time_CD(ComboBox cmbObj, string str_Tori_CD, string str_Unso_CD)
        {
            DataSet ds = new DataSet();
            SqlConnection connect;
            //DB接続
            G_CommonClassDB.G_DB_Connect(out connect);
            //cmd設定
            SqlCommand sqlCmd = connect.CreateCommand();
            SqlParameter[] sqlPara = new SqlParameter[2];
            sqlPara[0] = G_CommonClassDB.G_DB_SetSQLDBParameter("@Tori_CD", ParameterDirection.Input, SqlDbType.VarChar, 25, str_Tori_CD);
            sqlPara[1] = G_CommonClassDB.G_DB_SetSQLDBParameter("@Unso_CD", ParameterDirection.Input, SqlDbType.VarChar, 25, str_Unso_CD);
            G_CommonClassDB.G_DB_ExecStoredProc(connect, sqlCmd, "USP_COM_M_Time_DataSelect", sqlPara, out ds);

            //DB解放
            G_CommonClassDB.G_DB_Dispose(connect);

            //コンボボックス生成
            if (!G_Control_SetData_ComboBox(cmbObj, ds, 1, 0))
            {
                MessageBox.Show(Resources.MakePrinterCombo);
                return false;
            }

            //データセットクリア
            ds.Clear();

            //正常値を返す
            return true;
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox_Unso_CD
        // Parameter : cmbObj            :ComboBox     :データを設定するコンボボックス
        //           : str_Tori_CD       :String       :取引先コード
        //           : str_Data_KB       :String       :データ区分
        // Return    : true Or false
        // Contents  : コンボボックス用のデータを取得し生成(運送方法コード生成限定用)
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox_Unso_CD(ComboBox cmbObj, string str_Tori_CD, string str_Data_KB)
        {
            DataSet ds = new DataSet();
            SqlConnection connect;
            //DB接続
            G_CommonClassDB.G_DB_Connect(out connect);
            //cmd設定
            SqlCommand sqlCmd = connect.CreateCommand();
            SqlParameter[] sqlPara = new SqlParameter[2];
            sqlPara[0] = G_CommonClassDB.G_DB_SetSQLDBParameter("@Tori_CD", ParameterDirection.Input, SqlDbType.VarChar, 25, str_Tori_CD);
            sqlPara[1] = G_CommonClassDB.G_DB_SetSQLDBParameter("@Data_KB", ParameterDirection.Input, SqlDbType.VarChar, 25, str_Data_KB);
            G_CommonClassDB.G_DB_ExecStoredProc(connect, sqlCmd, "USP_COM_M_Foward_DataSelect", sqlPara, out ds);

            //DB解放
            G_CommonClassDB.G_DB_Dispose(connect);

            //コンボボックス生成
            if (!G_Control_SetData_ComboBox(cmbObj, ds, 1, 0))
            {
                MessageBox.Show(Resources.MakePrinterCombo);
                return false;
            }

            //データセットクリア
            ds.Clear();

            //正常値を返す
            return true;
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox
        // Parameter : cmbObj            :Combobox          需要绑定的Combobox;       
        //             str_Data_KB       :String            指定绑定数据的标示;
        // Return    : true Or false      True为成功，False为失败
        // Contents  : 根据输入的标示绑定Combobox
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        // Makes     : Tony
        // History   : 2008/10/15       : 修改
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)
        {
			try
			{
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataStart, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");
                DataSet ds = null;
                ds = G_CommonDB.G_DB_ComboboxData(str_Data_KB);
                if (ds == null)
                {
                    return false;
                }                

                //填充Comobox
                if (!G_Control_SetData_ComboBox(cmbObj, ds, 1, 0))
                {
                    //message ////
                    MessageBox.Show(Resources.MakePrinterCombo);
                    return false;
                }

                ds.Clear();

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataEnd, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");

                return true;
            }
            catch (Exception err)
            {
                //生成空combobox
                G_Control_ClearData_ComboBox(cmbObj);

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.MakeDataError + err.Message, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");
                return false;
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_MakeData_ComboBox
        // Parameter : cmbObj            :Combobox          需要绑定的Combobox;       
        //             str_Data_KB       :String            指定绑定数据的标示;
        // Return    : true Or false      True为成功，False为失败
        // Contents  : 根据输入的标示绑定Combobox
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        // Makes     : Tony
        // History   : 2008/10/15       : 修改
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB, int NameColumn, int ValueColumn)
        {
            try
            {
                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataStart, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");
                DataSet ds = null;
                ds = G_CommonDB.G_DB_ComboboxData(str_Data_KB);
                if (ds == null)
                {
                    return false;
                }

                //填充Comobox
                if (!G_Control_SetData_ComboBox(cmbObj, ds, NameColumn, ValueColumn))
                {
                    //message ////
                    MessageBox.Show(Resources.MakePrinterCombo);
                    return false;
                }

                ds.Clear();

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.MakeDataEnd, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");

                return true;
            }
            catch (Exception err)
            {
                //生成空combobox
                G_Control_ClearData_ComboBox(cmbObj);

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.MakeDataError + err.Message, "G_Control_MakeData_ComboBox(ComboBox cmbObj, string str_Data_KB)");
                return false;
            }
        }

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_SetData_ComboBox(ComboBox cmbObj, DataSet DBData, int NameColumn, int ValueColumn)
        // Parameter : cmbObj            :ComboBox      :需要绑定的数据库
        //           : DBData            :DataSet       :用于绑定的数据源
        //           : NameColumn        :int           :作为显示的列Index
        //           : ValueColumn       :int           :作为值得列的Index
        // Return    : true Or false
        // Contents  : 绑定combobox
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        // Makes     : Tony
        // History   : 2008/10/15       : 修改
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_SetData_ComboBox(ComboBox cmbObj, DataSet DBData, int NameColumn, int ValueColumn)
		{
			try
			{

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.BindStart, "G_Control_SetData_ComboBox(ComboBox cmbObj, DataSet DBData, int NameColumn, int ValueColumn)");

				DataTable dt = DBData.Tables[0];
				cmbData[] cmb = new cmbData[dt.Rows.Count];
				for (int i = 0; i < dt.Rows.Count; i++)
				{
					cmb[i] = new cmbData();
					cmb[i].Name = dt.Rows[i][NameColumn].ToString();
					cmb[i].Value = dt.Rows[i][ValueColumn].ToString();
				}
				cmbObj.DataSource = cmb;
				cmbObj.DisplayMember = "Name";
				cmbObj.ValueMember = "Value";


                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.BindEnd, "G_Control_SetData_ComboBox(ComboBox cmbObj, DataSet DBData, int NameColumn, int ValueColumn)");
				return true;
			}
			catch(Exception err)
            {

                G_Control_ClearData_ComboBox(cmbObj);

                G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.BindError + err.Message, "G_Control_SetData_ComboBox(ComboBox cmbObj, DataSet DBData, int NameColumn, int ValueColumn)");
                return false;
			}
		}
        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_SetData_ComboBox(オーバーロード2)
        // Parameter : cmbObj            :ComboBox      :データを設定するコンボボックス
        //           : Data              :xmlData[]       :設定するデータ
        //           : NameColumn        :int           :表示に使用する列
        //           : ValueColumn       :int           :値に使用する列
        // Return    : true Or false
        // Contents  : コンボボックスにデータをセット
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_SetData_ComboBox(ComboBox cmbObj, xmlData[,] XMLData, int NameColumn, int ValueColumn)
		{
			try
			{
				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.コンホホックステータ設定開始, "G_Control_SetData_ComboBox(xmlData[,])");

				cmbData[] cmb = new cmbData[XMLData.GetLength(0)];
				for (int i = 0; i < XMLData.GetLength(0); i++)
				{
					cmb[i] = new cmbData();
					cmb[i].Name = XMLData[i, NameColumn].NodeValue;
					cmb[i].Value = XMLData[i, ValueColumn].NodeValue;
				}
				cmbObj.DataSource = cmb;
				cmbObj.DisplayMember = "Name";
				cmbObj.ValueMember = "Value";

				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.コンホホックステータ設定終了, "G_Control_SetData_ComboBox(xmlData[,])");
				return true;
			}
			catch (Exception err)
			{
                //エラーであった為空白のコンボボックスを生成する。
/*
                cmbData[] cmb = new cmbData[1];
                cmb[0] = new cmbData();
                cmb[0].Name = "";
                cmb[0].Value = "";
                cmbObj.DataSource = cmb;
                cmbObj.DisplayMember = "Name";
                cmbObj.ValueMember = "Value";
*/ 
                G_Control_ClearData_ComboBox(cmbObj);

				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.コンホホックステータ設定エラー + err.Message, "G_Control_SetData_ComboBox(xmlData[,])");
				return false;
			}
		}
        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_SetData_ComboBox(オーバーロード3)
        // Parameter : cmbObj            :ComboBox      :データを設定するコンボボックス
        //           : Data              :xmlData[]       :設定するデータ
        // Return    : true Or false
        // Contents  : コンボボックスにデータをセット
        // Makes     : 渡辺
        // History   : 2007/06/14       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
		public static bool G_Control_SetData_ComboBox(ComboBox cmbObj, xmlData[] Data)
		{
			try
			{
				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcStart, Resources.コンホホックステータ設定開始, "G_Control_SetData_ComboBox(xmlData[,])");

				cmbData[] cmb = new cmbData[Data.Length];
				for (int i = 0; i < Data.Length; i++)
				{
					cmb[i] = new cmbData();
					cmb[i].Name = Data[i].NodeName;
					cmb[i].Value = Data[i].NodeValue;
				}
				cmbObj.DataSource = cmb;
				cmbObj.DisplayMember = "Name";
				cmbObj.ValueMember = "Value";


				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.ProcEnd, Resources.コンホホックステータ設定終了, "G_Control_SetData_ComboBox(xmlData[,])");
				return true;
			}
			catch (Exception err)
			{
                //エラーであった為空白のコンボボックスを生成する。
/*
                cmbData[] cmb = new cmbData[1];
                cmb[0] = new cmbData();
                cmb[0].Name = "";
                cmb[0].Value = "";
                cmbObj.DataSource = cmb;
                cmbObj.DisplayMember = "Name";
                cmbObj.ValueMember = "Value";
*/
                G_Control_ClearData_ComboBox(cmbObj);

				//ログ書込み
				G_CommonClassSystem.G_System_SetLog(G_CommonDefine.LogMode.Error, Resources.コンホホックステータ設定エラー + err.Message, "G_Control_SetData_ComboBox(xmlData[,])");
				return false;
			}
		}

        ////////////////////////////////////////////////////////////////////////////
        // OutLine   : G_Control_CheckCombobox(List<ComboBox> lcmb_List)
        //           : 创建空Combobox
        // Makes     : Tony
        // History   : 2008/10/28       : 初版
        //           :
        ////////////////////////////////////////////////////////////////////////////
        public static bool G_Control_CheckCombobox(List<ComboBox> lcmb_List)
        {
            bool Is_Find = false;
            DataTable dt_NoCount = new DataTable();
            dt_NoCount.Columns.Add("Name");
            dt_NoCount.Columns.Add("Value");

            dt_NoCount.Rows.Add("NoCount", -1);
            foreach (ComboBox cmb_temp in lcmb_List)
            {
                if (cmb_temp.DataSource == null || cmb_temp.Items.Count == 0)
                {
                    cmb_temp.DataSource = dt_NoCount.Copy();
                    cmb_temp.DisplayMember = "Name";
                    cmb_temp.ValueMember = "Value";
                    Is_Find = true;
                }
            }
            return Is_Find;
        }

        /// <summary>
        /// Set Customer Group Data Source 
        /// </summary>
        /// <param name="cmbObj"></param>
        /// <returns></returns>
        public static bool G_Control_MakeData_ComboBox_CustGroup(ComboBox cmbObj)
        {
            SqlConnection sqlConnection = null;

            try
            {
                if (!G_CommonClassDB.G_DB_Connect(out sqlConnection))
                {
                    return false;
                }


                DataSet ds = null;

                G_CommonClassDB.G_DB_ExecStoredProc(sqlConnection, out ds, "USP_COM_M_CustGroup_Main_DataSelect");

                if (ds == null)
                {
                    return false;
                }

                G_Control_SetData_ComboBox(cmbObj, ds, 1, 0);
            }
            catch (Exception)
            {

                return false;
            }
            finally
            {
                if (sqlConnection != null)
                {
                    G_CommonClassDB.G_DB_Dispose(sqlConnection);
                }
            }
            return true;
        }
	}
}
